package cn.wolfcode.trip.base.domain;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

/**
 * 商品实体类
 *
 * @author patch
 */
@Getter
@Setter
@JsonIgnoreProperties({"json"}) // 忽略转换JSON的属性
public class Product extends BaseDomain {
    /**
     * 显示
     */
    public static final int STATE_show = 1;
    /**
     * 不显示
     */
    public static final int STATE_BLANK = 2;
    /**
     * 商品名称
     */
    private String name;
    /**
     * 副标题
     */
    private String subTitle;
    /**
     * 商品大图片
     */
    private String imgurl;
    /**
     * 商品价格（积分）
     */
    private Integer price;
    /**
     * 商品状态
     */
    private Integer status = STATE_show;
    /**
     * 排序
     */
    private Integer sequence;
    /**
     * 商品详情
     */
    private ProductCon content;
    /**
     * 商品类别
     */
    private ProductDir dir;
    /**
     * 添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date addTime;
    /**
     * 商品销量
     */
    private Integer salesNum = 0;
    /**
     * 商品库存
     */
    private Integer storeNum = 0;
    /**
     * 状态对应文字
     * @return
     */
    public String getStateName() {
        if (STATE_show == status) {
            return "已发布";
        }
        return "未发布";
    }

    /**
     * JSON数据
     * @return
     */
    public String getJson() {
        HashMap<String, Object> map = new HashMap<>(20);
        map.put("id", id);
        map.put("name", name);
        map.put("subTitle", subTitle);
        map.put("imgurl", imgurl);
        map.put("price", price);
        map.put("status", status);
        map.put("conId", content.getId());
        map.put("sequence", sequence);
        map.put("storeNum", storeNum);
        if (dir.getParent() != null) {
            map.put("parentId", dir.getParent().getId());
        }
        map.put("addTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(addTime));
        return JSON.toJSONString(map);
    }
}